package daoyu.apps.config;

import daoyu.common.exception.InvalidParameterException;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 抖音小程序的配置
 */

@Data
@Component
@ConfigurationProperties(prefix = "douyin")
public class Config {

    /**
     * 小程序 App ID
     */
    private String appid;
    /**
     * 小程序 App Secret
     */
    private String secret;
    /**
     * 登录地址
     */
    private String loginUrl;
    /**
     * 授权类型，默认值为 "authorization_code"
     */
    private String grantType = "authorization_code";
    /**
     * 客户端 Token 获取 URL
     */
    private String clientTokenUrl;
    /**
     * 访问令牌获取 URL
     */
    private String accessTokenUrl;
    /**
     * 创建订单 URL
     */
    private String createOrderUrl;
    /**
     * 查询订单 URL
     */
    private String queryOrderUrl;
    /**
     * 订单详情 URL
     */
    private String detailUrl;
    /**
     * 推送订单 URL
     */
    private String pushOrderUrl;
    /**
     * 创建退款 URL
     */
    private String createRefundUrl;
    /**
     * 退款结果查询 URL
     */
    private String refundResultUrl;
    /**
     * SKU 类型
     */
    private int skuType;
    /**
     * SKU 标签组 ID
     */
    private String skuTagGroupId;
    /**
     * 入口 Schema 路径
     */
    private String entrySchemaPath;
    /**
     * 基本交易订单查询 URL
     */
    private String tradeBasicOrderQueryUrl;
    /**
     * 基本交易退款创建 URL
     */
    private String tradeBasicRefundCreateUrl;

    public Config(@Value("${douyin.appid}") String appid, @Value("${douyin.secret}") String secret) {
        if (appid == null || appid.isEmpty()) {
            throw new InvalidParameterException("appid 不能为空");
        }
        if (secret == null || secret.isEmpty()) {
            throw new InvalidParameterException("secret 不能为空");
        }
        this.appid = appid;
        this.secret = secret;
    }

}
